//websocket.js
var ws = require("nodejs-websocket");
var PORT = 1760;

var server = ws
  .createServer(function (conn) {
		// 接收信息
    conn.on("text", function (str) {
      console.log('接收到信息：',str);
      let data = JSON.parse(str);
      switch (data.type) {
        case "setUser":
          console.log(data.userId);
          conn.userId = data.userId;
          break;
        case "sendTo":
          sendTo(data.userId, JSON.stringify(data.data));
          break;
      }
    });

		// 关闭连接
    conn.on("close", function (code, reason) {
      console.log("connection closed");
      server.connections.forEach((conn) => {
        console.log('userId:',conn.userId);
      });
      console.log("当前连接数", server.connections.length);
    });

		// 错误处理
    conn.on("error", function (err) {
      console.log("报错，错误信息：",err);
    });
  }).listen(PORT);


/**
 * 发送消息
 * 向用户id相同的发送消息
 * @param { String } userId 用户id
 * @param { String } data 数据集合
 */
const sendTo = (userId, data) => {
  server.connections.forEach((conn) => {
    if (conn.userId == userId) {
      conn.sendText(data);
    }
  });
  console.log('连接数量：',server.connections.length);
};

console.log("websocket server listening on port " + PORT);
